home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
wb
/
czesc_4
/
viruscheck
/
checkarc1_10.lha
/
CheckArc.docFr
next >
Wrap
Text File
|
1996-10-24
|
12KB
|
219 lines
CHECKARC 1.1 24/10/96
Introduction
Ce programme est mailware (afin de voir si des gens, autre que moi et mes potes, s'en servent :-(.
Il peut être aussi suggestionware, à vous de voir...
Ce petit programme est censé examiner RÉCURSIVEMENT vos archives afin de voir si elles
ne contiennent pas une de ces vilaines bêtes communément appelées VIRUS (Pouarc ...).
C'est grace au port AREXX de VirusZ que le scan virus va être possible. Ce script remplace, en mieux
à mon goût, la fonction "Extract Archives" de VirusZ.
Pourquoi j'ai fait ce programme ?
- VirusZ ne scanne pas les .DMS (sauf erreur de ma part)
- Mon script détecte les erreurs physiques dans les .DMS (Utilisateur d'une version enregistré
de Dms uniquement)
- Mon rapport en fin de scan est à mon goût plus explicite pour tout le monde et plus complet
- J'avais envie de programmer en AREXX
De quoi ce script a-t-il besoin ??
* La RexxReqTools.library (util/rexx/RexxReqTools.lha)
* La RexxSupport.library (elle doit être sur une de vos disquettes systèmes)
* Lha (util/arc/LhA_e138.run)
* Lzx (util/arc/lzx121.lha)
* Dms (util/arc/dms111.run)
* VirusZ 1.3x (util/virus/VirusZ_II135.lha)
* Unzip (util/arc/Unzip512x.lha)
* Unrar (util/arc/Unrar202.lha)
Les versions données ci-dessus sont des versions publiques puisqu'elles sont disponibles sur tout
miroir Aminet digne de ce nom. Tout utilisateur, même les débutants d'Aminet, pourront ainsi
facilement récupérer tout ce qui est nécessaire au bon fonctionnement du script.
Comment qu'on s'en sert ??
La ligne de commande est la suivante : Rx Chemin/CheckArc.vzrx Argument.
L'Argument peut être soit un chemin soit une archive. L'Argument n'est pas obligatoire :
si vous lancez l'exécution Rx Chemin/CheckArc.vzrx vous aurez
1) une boite de requête qui vous demandera de préciser ce que vous allez sélectionner
(répertoire ou archive)
2) une requête de fichier (de type Reqtools) qui s'ouvrira dans le répertoire courant dans
laquelle vous choisirez ce que vous avez précisé au 1). Si vous n'y sélectionnez rien, le
script fera récursivement la liste des archives (Liste2 = 'RAM:CheckArc.ListeArchives2')
contenues dans le chemin courant pour les scanner ensuite.
Les archives sont reconnues grace à leur suffixes (.lha, .lzh,...). Si l'Argument que vous avez
transmis ne plait pas à CheckArc.vzrx, il saura vous le faire comprendre :-)
ATTENTION : Quand vous donnerez un chemin au script, il ne listera que des archives (ET PAS LES
AUTRES FICHIERS) contenues dans ce chemin. Pour scanner les autres fichiers, utilisez
VirusZ sans l'option "Extract Archives".Bien entendu, lors d'un scan d'archives, il
s'occupe de tous les types de fichiers qu'elles contiennent (c'est la moindre des choses,
non ?).
*** AVERTISSEMENT IMPORTANT ***
Lors du scan, vous risquez de vous apercevoir que des commandes échouent.
Exemple :
C:List erreur code 20
Pas d'affolement, c'est parfaitement contrôlé par le script. Je sais que cela ne fait pas propre,
mais je ne sais pas comment empêcher AREXX de retourner ces messages d'erreur !!! (voir plus bas
la section "To do")
Comment on règle les paramètres ??
Il faut éditer le script avec l'editeur de votre choix (ceci n'est pas important).
Voici les champs que vous avez à éventuellemnt modifier :
/* Programmes externes */
Prog_VirusZ = 'UTILITAIRES:SHAREWARE/VIRUSZ/VirusZ'
Prog_Lha = 'C:Lha'
Prog_Lzx = 'C:Lzx'
Prog_Dms = 'C:Dms'
Prog_Zip = 'C:Unzip'
Prog_Rar = 'C:Unrar'
/* Fichiers indispensables à CheckArc.vzrx */
ListeProbleme = 'RAM:CheckArc.BadArchives'
Liste1 = 'RAM:CheckArc.ListeArchives1'
Liste2 = 'RAM:CheckArc.ListeArchives2'
SortieDMS = 'RAM:CheckArc.SortieDMS'
/* Initialisations de variables */
TempPath = 'T:CheckArcTMP' /* CE CHEMIN SERA EFFACE RECURSIVEMENT A LA FIN DU SCRIPT */
TempPath2 = 'blabla'
TempPathDMS = 'RAD1:'
UseQuitFlag = 'no'
NomParDefaut = 'ListeProblèmes'
Symbole = '32m->31m' <- On peut donner des codes ASCII pour faire de zolies choses :-)
* En ce qui concerne les programmes externes, tout le monde a compris qu'il s'agit de dire au script
où il doit aller les chercher (Chemin d'accès + Nom).
* CheckArc.vzrx va créer au plus 4 fichiers. Le premier, on aimerait qu'il ne soit jamais créé. En
effet c'est la liste de toutes les archives qui contiennent au moins un des 6 problèmes que peut
détecter le script. Le fichier Liste2 est la liste des archives contenues dans l'éventuel chemin
que vous aurez transmis en Argument (Si vous transmettez une archive en Argument, Liste2 ne sera
pas créée). Le fichier SortieDMS récupère tout le barratin que vous fait Dms lorsqu'il
désarchive. Ceci sera indispensable pour voir si une archive a des erreurs physiques (Pour les
possesseur d'une version enregistrée de Dms uniquement).
REMARQUE : Il est conseillé de mettre le nom du script dans les noms fichiers temporaires au lieu
d'utiliser les éternels RAM:titi, RAM:toto,...En effet, si vous utilisez RAM:toto dans
tous vos scripts et que vous en lanciez au moins 2 en multitâche, il risque d'y avoir
des conflits lors des accès aux fichiers temporaires à cause de noms identiques !!!
* Les variables :
- TempPath est le répertoire temporaire dans lequel le désarchivage des .LHA, .LZH, .LZX, .RUN,
.ZIP et .RAR s'effectura.
ATTENTION1 : L'arborescence sauf le dernier tiroir DOIT exister : le dernier répertoire, s'il
est présent sera utilisé, s'il est absent il sera créé.
Exemple : Si vous voulez TempPath = 'UneArborescenceQuelconque/MonDernierTiroir', il faudra
que l'intégralité de "UneArborescenceQuelconque" existe (si au moins un des tiroirs
n'existe pas, c'est foutu :-(.
ATTENTION2 : "MonDernierTiroir" sera effacé récursivement à la fin du script ("MonDernierTiroir"
inclu).
REMARQUE : Désolé pour ces contraintes, mais la commande MakeDir ne crée pas d'arborescence :-(
Une boucle paliant à ce problème serait facile à faire mais j'en ai pas vu la
nécessité.
- TempPath2 est la variable qui contrôle la fin de la récursivité. Sa valeur
d'initialisation est sans importance.
- TempPathDMS est le chemin dans lequel le désarchivage des .DMS s'effectura.
- UseQuitFlag indiquera à VirusZ de s'éteindre s'il est mis à yes. Plus clairement :
vous n'avez peut être pas envie d'avoir VirusZ activé en permanence, donc mettre yes comme
valeur à UseQuitFlag aura pour conséquence de quitter VirusZ à la fin du script.
- NomParDefaut est le nom par défaut sous lequel CheckArc.vzrx sauvera le rapport en fin
du script : une requête vous demandera si oui ou non vous voulez le sauver.
- Symbole représente le symbole que vous préférez pour avoir un contrôle visuel de la
récursivité.
ATTENTION : Ne modifier rien d'autre au script, sauf si vous savez ce que vous faites.
Qu'est ce qui m'veut ce #!!@@ de rapport !!!
Bon ça y est, vous avez tout compris et vous allez lancer votre première exécution. Voilà les
différentes erreurs qui peuvent arriver.
* ERREUR !!! au cours de l'extraction
Ceci peut vouloir dire que : - L'archive est corrompue. Dans ce cas votre archive est bonne
pour la poubelle :-(
- Le disque contenant le chemin de désarchivage est plein.
Indiquez un autre disque à CheckArc.vzrx en changeant la valeur
de TempPath et recommencez le scan.
- ...
* ERREUR !!! durant la copie des fichiers de RAD1:
Ceci peut vouloir dire que : - Sur votre disque RAD1, des fichiers n'ont pu être lus. Soit des
fichiers sont protégés contre toutes tentatives de lecture, soit
ils sont endommagés.
- ...
* VIRUS localisé dans
Je crois que tout le monde à compris :-)
* Disque non DOS dans le périphérique RAD1:
Ceci n'est pas une erreur grave. Elle est juste là à titre indicatif (Coucou André :-).
* ERREUR !!! durant l'examen récursif du répertoire
Ceci peut vouloir dire que : - La commande List a échouée lors de son exécution sur le répertoire
en question. Ceci peut être du au fait que certains noms
de répertoire contiennent des caractères interdits.
Exemple : RAM:|toto
Le caractère "|" ne doit pas être utilisé pour un nom de
répertoire.
Ceci a une conséquence grave : la commande List ayant échouée, le
scan est interrompu, donc votre archive n'a pas été scannée à 100%.
Donc, un virus peut se cacher dans la partie non scannée.
- Au moins un des tiroirs de l'arborescence à lister n'existe pas.
- ...
* ERREUR !!! durant la vérification de l'archive
Ceci peut vouloir dire que : - Vous n'avez pas assez de RAM. En effet, le script est programmé
pour décompresser les exécutables et les données lors du scan.
- ...
Historique
CheckArc 1.0 : Première version distribuée
CheckArc 1.1 : - Reconnait les archives .RAR
- Gestion plus élégantes des répertoires ne contenant pas d'archives. En effet,
dans la version 1.0, si vous donniez un tel tiroir, la commande Sort
retournait une erreur code 20. Rien de grave, mais peu esthétique. Maintenant, vous
serez informé et le programme quittera proprement.
- Meilleure reconnaissance entre fichier et tiroir grace à la RexxSupport.library :
terminé la magouille avec la commande Dir. Cette astuce retournait une erreur code
20 lors d'un CheckArc sur une simple archive. Rien de grave pour la reconnaisance
des virus (le script était pleinement fonctionnel) mais c'est pas beau. Na !!
- Meilleure gestion de la requête ReqTools :
* Une première boite pour préciser votre type de sélection (répertoire ou archive)
et une seconde pour la sélection.
* Ajout du filtre #?.lha|#?.lzh|#?.lzx|#?.run|#?.dms|#?.zip|#?.rar
* Maintenant on quitte si on clique le bouton "Annuler" (et oui, un oubli :-(
- Meilleure gestion des .RUN : en effet, tous les .RUN ne sont pas des archives !!
Ceci était une erreur grave qui compromettait l'intégralité du scan virus sur ces
archives. C'est maintenant corrigé. Heureusement que de tels fichiers ne courent
pas les rues.
To do
- Simplifier la sélection RexxReqTools.library (si possible)
- Faire taire les erreurs code une fois pour toutes !!!!!!!!!!
- An english documentation :-)
- Les différentes idées des utilisateurs (si j'en reçoie :-)
Toutes aides ou suggestions sont les bienvenues (surtout pour les deux premiers).
Les remerciements
* Georg Hörmann pour son excellent VirusZ.
* Nico François et Magnus Holmgren pour la génialissime RexxReqTools.library.
* Lionel qui par ses idées avisées, clairvoyantes, limpides, pleines de bon sens,...
(ça ira comme ça ou un peu plus :-) m'a permis d'améliorer le script.
* Ma copine qui a été privée de ses jeux favoris et de sa télé.
* André, Marc, Nelson, ... pour leur tests plus ou moins sérieux :-)...
* Jérôme pour ses conseils et son écoute de dernière minute (hello RAM :-)
* et ceux que j'ai oublié de citer...
L'auteur
Jean-Philippe MISTROT
j_p_m@hotmail.com
Si vous pensez avoir trouvé des optimisations pour que le script fonctionne mieux ou que vous
souhaitez que j'y apporte d'autres fonctions n'hésitez pas à me contacter.
J'attire votre attention sur le fait que je suis totalement débutant en AREXX, donc n'en veuillez
pas trop à mes éventuelles maladresses...